<!doctype html>
<html>
  <head>
    <title>Triggers: The Trigger objects exposes the expected properties.</title>
    <script src="../resources/testharness.js"></script>
    <script src="../resources/testharnessreport.js"></script>
  </head>
  <body>
    <script>
      // Tests that the TimestampTrigger object exposes the properties per the
      // semantics defined by the specification.
      test(function () {
          const timestamp = Date.now();
          const trigger = new TimestampTrigger(timestamp);

          // timestamp property gets initialized in constructor
          assert_equals(trigger.timestamp, timestamp);

          // timestap property is readonly
          trigger.timestamp = 42;
          assert_equals(trigger.timestamp, timestamp);

          // timestamp is required in constructor
          assert_throws_js(TypeError, () => new TimestampTrigger());

          // invalid timestamps get set to 0
          assert_equals((new TimestampTrigger('fail')).timestamp, 0);

          // can use date objects as timestamp
          const date = new Date();
          assert_equals((new TimestampTrigger(date)).timestamp, date.valueOf());

      }, 'Checks the properties exposed on the TimestampTrigger object.');
    </script>
  </body>
</html>
